package ocio.actions;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import ocio.utils.RellenoCombos;
import ocio.beans.Oferta;
import ocio.beans.Producto;
import ocio.beans.Provincia;
import ocio.services.ServiceLocator;
import ocio.services.ProductoService;


import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

/**
 * Clase destinataria de petición de información sobre todas las ofertas
 * asociadas a un producto.
 * @author Esther García Galán
 * @author Rubén Gómez Vales
 * @version 1.0 13/05/2014
 * @see ocio.beans.Oferta
 * @see ocio.beans.Producto
 */
public class ListarOfertasAction extends ActionSupport {

	private static final long serialVersionUID = 1L;

	private int id;	// id del producto del que hay que listar las ofertas
	
	private Set<Oferta> listaOfertas = new HashSet<Oferta>();
	private List<Provincia> listaProvincias = new ArrayList<Provincia>();
	private Producto producto;

    /**
	 * Método execute() de la clase ActionSupport de Struts 2. 
	 * Solicita los servicios para recuperar la información de todas las ofertas de un producto.
	 * @return un string que indica la respuesta de la acción ejecutada sobre la petición del usuario.
	 */
	public String execute(){
		
		RellenoCombos rC = new RellenoCombos();
		setListaProvincias(rC.getListaProvincias(true));
		
		String resultado = "fail";
		ServiceLocator serviceLocator = ServiceLocator.getServiceLocator();

		ProductoService pS = (ProductoService)serviceLocator.getService("Producto");
		producto = (Producto)pS.searchById(id);
		listaOfertas=producto.getOfertas();
		
		Map<String,Object> sesion = ActionContext.getContext().getSession();
		sesion.remove("IDPRODUCTO"); //Producto que se está consultando
		sesion.put("IDPRODUCTO",producto.getId());
		
		resultado = "success";
			
		return resultado;
	}


	public int getId() {
		return id;
	}


	public void setId(int id) {
		this.id = id;
	}


	public Set<Oferta> getListaOfertas() {
		return listaOfertas;
	}


	public void setListaOfertas(Set<Oferta> listaOfertas) {
		this.listaOfertas = listaOfertas;
	}


	public Producto getProducto() {
		return producto;
	}


	public void setProducto(Producto producto) {
		this.producto = producto;
	}


	public List<Provincia> getListaProvincias() {
		return listaProvincias;
	}


	public void setListaProvincias(List<Provincia> listaProvincias) {
		this.listaProvincias = listaProvincias;
	}



		
}
